The approaches described in this section could be pursued but are not necessarily approaches that have previously been conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
In a typical load balancing scenario, a service hosted by a group of servers is front-ended by a load balancer (LB) (also referred to herein as a LB device), which represents this service to clients as a virtual service. Clients needing the service can address their packets to the virtual service using a virtual Internet Protocol (IP) address and a virtual port. The LB will inspect incoming packets and, based on predetermined policies/algorithms, will choose a particular server from the group of servers; modify the packet, if needed and forward the packet to the server. On the way back from the server (optional), the LB will get the packet, modify the packet if needed and send the packet back to the client.
The traditional approach for LB of a network of servers includes several shortcomings. For example, in some situations, the network request load may stay lower than the maximum capacity of one or more LB devices for a long time, which could lead to wasted resources. In other situations, network requests can exceed the maximum capacity of the LB devices. Generally speaking, traditional LB of a network includes one or more static devices responsible for distribution of data packets but does not allow dynamically adjusting the network configuration to scale the network resources up or down. Therefore, more efficient load balancing is needed.